package com.csi.mapper;

import com.csi.domain.UserBook;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.awt.print.Book;
import java.util.List;
import java.util.Map;

public interface UserBookMapper {
    /**
     * 查询用户所有订单
     * @return
     */
    @MapKey("id")
    Map<String,Object> showUserBook(long hotelId);
    /**
     * 根据入住日、离店日、房型模糊查询可订几间房
     * @param roomId
     * @param check_time
     * @param leave_time
     * @return
     */
    int findRoomNum(@Param("id") int roomId,
                    @Param("check_time") String check_time,
                    @Param("leave_time") String leave_time);


    /**
     * 根据房型Id查询预定页面酒店及房型信息
     * @param roomTypeId
     * @return
     */
    Map<String,Object> findByRoomTypeId4Info(@Param("id") int roomTypeId);

    /**
     * 根据房型Id查询房型设施信息
     * @param roomTypeId
     * @return
     */
    List<String> findByRoomTypeId4facility(@Param("id") int roomTypeId);

    /**
     * 查找这个房型可以入住的房间Id
     * @param roomId
     * @param check_time
     * @param leave_time
     * @return
     */
    List<Long> findRoomId(@Param("id") long roomId,
                          @Param("check_time") String check_time,
                          @Param("leave_time") String leave_time);

    /**
     * 添加订单(用户可选多个房间)
     * @param userBooks
     * @return
     */
    int saveBook(@Param("books") List<UserBook> userBooks);

    /**
     * 用户支付
     * @param userBook
     * @return
     */
    int payment(UserBook userBook);

    /**
     * 定时取消订单
     * @param userBook
     * @return
     */
    int cancel(UserBook userBook);


    /**
     * 更新订单状态
     * @param dueId
     * @return
     */
    int updateBook4Access(long dueId);

    /**
     * 订单改为已完成
     * @param bookId
     * @return
     */
    int completed(long bookId);

    /**
     * 订单改为待评价
     * @param bookId
     * @return
     */
    int evaluated(long bookId);
}
